package com.acme.bankapp.domain.bank;

/**
 * Bank account.
 *
 */
public interface Account {
	/**
	 * Adds funds to client's account.
	 * 
	 * @param amount
	 *            amount of funds, must be positive
	 */
	void deposit(double amount);

	/**
	 * Withdraws funds from client's account. If amount exceeds maximum
	 * available amount to withdraw, method does nothing.
	 * 
	 * @param amount
	 *            amount of funds to withdraw, but be positive
	 */
	void withdraw(double amount);

	/**
	 * Returns account balance.
	 * 
	 * @return account balance
	 */
	double getBalance();

	/**
	 * Returns maximum amount of funds o withdraw.
	 * 
	 * @return maximum amount of funds to withdraw
	 */
	double maximumAmountToWithdraw();
}
